from langchain.tools import tool
from datetime import datetime
from dateutil.relativedelta import relativedelta


@tool
def get_days_count_for_period(months_period: int, from_date: str = None) -> int:
    """
    Вычисление количества дней для указанного периода в месяцах.

    Аргументы:
        months_period (int): Период времени в месяцах. (Сколько месяцев прибавить к дате)
        from_date (str, optional): Дата начала периода в формате "дд.мм.гггг". Если не указывать то используется текущая дата.

    Возвращает:
        int: Количество дней в заданном периоде времени.
    """

    if not from_date:
        from_date: datetime = datetime.now()
    else:
        if '-' in from_date:
            from_date = from_date.replace('-', '.')
        from_date: datetime = datetime.strptime(from_date, "%d.%m.%Y")
    
    rd = relativedelta(months=months_period)
    target_date = from_date + rd
    return (target_date - from_date).days
